//======================================================================================
//  Notes:Use this command to anonymously check out the latest project source code:
//  Non-members may check out a read-only working copy anonymously over HTTP.
//  http://YHQCodingWsp.googlecode.com/svn/trunk/
//
//  Author:		Kevin Yang
//  Email:		Bigearrabbit@qq.com
//
//  DATE:		2013-4-20
//
//  File Name:	YHHPropertyDefine.h
//
//  Notes:
//
//======================================================================================

#ifndef _YHHPropertyDefine_H_
#define _YHHPropertyDefine_H_

#define YHHPropertyDefinePointerGetGet(iName,iClassType) \
	public: inline const iClassType * Get##iName##Ptr()const {return m_p##iName;};\
	public: inline iClassType * Get##iName##Ptr() {return m_p##iName;};\
    protected: iClassType * m_p##iName

#define YHHPropertyDefinePointerGetGetSet(iName,iClassType) \
	public: inline const iClassType * Get##iName##Ptr()const {return m_p##iName;};\
	public: inline iClassType * Get##iName##Ptr() {return m_p##iName;}\
	public: inline void Set##iName##Ptr(iClassType * ipValue) {m_p##iName = ipValue;};\
    protected: iClassType * m_p##iName
	
#define YHHPropertyDefinePointerGet(iName,iClassType)\
	public: inline const iClassType * Get##iName()const {return m_p##iName;};\
    protected: iClassType * m_p##iName
	
#define YHHPropertyDefineGetGet(iName,iClassType)\
	public: inline const iClassType & Get##iName()const {return m_##iName;};\
	public: inline iClassType & Get##iName() {return m_##iName;}\
    protected: iClassType m_##iName

#define YHHPropertyDefineGetGetSet(iName,iClassType)\
	public: inline const iClassType & Get##iName()const {return m_##iName;};\
	public: inline iClassType & Get##iName() {return m_##iName;}\
	public: inline void Set##iName(const iClassType & iValue) {m_##iName = iValue;};\
    protected: iClassType m_##iName

#define YHHPropertyDefineGetSet(iName,iClassType)\
    public: inline const iClassType & Get##iName()const {return m_##iName;};\
    public: inline void Set##iName(const iClassType & iValue) {m_##iName = iValue;};\
    protected: iClassType m_##iName

#define YHHPropertyDefineGetConstRef(iName,iClassType)\
	public: inline const iClassType & Get##iName()const {return m_##iName;};\
    protected: iClassType m_##iName
	
#define YHHPropertyDefineGetCopy(iName,iClassType)\
	public: inline const iClassType Get##iName()const {return m_##iName;};\
    protected: iClassType m_##iName

#endif//_YHHPropertyDefine_H_
